package com.learn;

public class num_566 {
    /**
     * 在 MATLAB 中，有一个非常有用的函数 reshape ，它可以将一个 m x n 矩阵重塑为另一个大小不同（r x c）的新矩阵，但保留其原始数据。
     *
     * 给你一个由二维数组 mat 表示的 m x n 矩阵，以及两个正整数 r 和 c ，分别表示想要的重构的矩阵的行数和列数。
     *
     * 重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。
     *
     * 如果具有给定参数的 reshape 操作是可行且合理的，则输出新的重塑矩阵；否则，输出原始矩阵。
     *
     * @param mat
     * @param r
     * @param c
     * @return
     */
    public static int[][] matrixReshape(int[][] mat, int r,
                                        int c) {
        //如果新矩阵格子不够，直接返回
        if(mat.length*mat[0].length != r*c) return mat;
        int a = 0 , b = 0;
        int [][] ans = new int [r][c];
        for(int i = 0 ; i < r ; i++){
            for(int j = 0 ; j< c ; j++){
                ans[i][j] = mat[a][b];
                b++;
                //每当来到mat数组的行末，则换下一行继续赋值
                if(b==mat[0].length){
                    b = 0;
                    a++;
                }
            }
        }
        return ans;

    }
    public static void main(String[] args) {
        int [][] mat = {{1,2},{3,4}};
        System.out.println(mat[0][0]);
    }

}
